package com.ibigcat.module.mdm.controller.admin.customer.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import jakarta.validation.constraints.*;

@Schema(description = "管理后台 - 客户信息新增/修改 Request VO")
@Data
public class CustomerSaveReqVO {

    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "25049")
    private Long id;

    @Schema(description = "客户编号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "客户编号不能为空")
    private String customerCode;

    @Schema(description = "客户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
    @NotEmpty(message = "客户名称不能为空")
    private String customerName;

    @Schema(description = "简称", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "简称不能为空")
    private String abbreviation;

    @Schema(description = "联系人", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "联系人不能为空")
    private String contactPerson;

    @Schema(description = "联系人手机号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "联系人手机号不能为空")
    private String contactPersonPhone;

    @Schema(description = "电子邮箱", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "电子邮箱不能为空")
    private String mail;

    @Schema(description = "主体性质")
    private Integer mainNature;

    @Schema(description = "纳税人类型", example = "2")
    private Integer taxpayerType;

    @Schema(description = "纳税人识别号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "纳税人识别号不能为空")
    private String taxpayerCode;

    @Schema(description = "客户类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotEmpty(message = "客户类型不能为空")
    private String customerType;

    @Schema(description = "所在省份", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "所在省份不能为空")
    private String province;

    @Schema(description = "所在城市", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "所在城市不能为空")
    private String city;

    @Schema(description = "所在区域", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "所在区域不能为空")
    private String region;

    @Schema(description = "详细地址", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "详细地址不能为空")
    private String address;

    @Schema(description = "开户行名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
    @NotEmpty(message = "开户行名称不能为空")
    private String accountBankName;

    @Schema(description = "开户行账号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "开户行账号不能为空")
    private String accountCode;

    @Schema(description = "经销品牌", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "经销品牌不能为空")
    private String businessBrands;

    @Schema(description = "服务区域", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "服务区域不能为空")
    private String serviceArea;

    @Schema(description = "服务类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @NotEmpty(message = "服务类型不能为空")
    private String serviceType;

    @Schema(description = "人员生成标识")
    private Boolean userCreateFlag;

    @Schema(description = "园区编码", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "园区编码不能为空")
    private String parkCode;

    @Schema(description = "启停状态")
    private Boolean disabled;

}